package org.aynu.orderservice.feign;

import org.aynu.cartservice.common.CartResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.Map;

/**
 * 购物车服务客户端
 *
 * @author 小粥
 * @since 2025/03/03
 */

@FeignClient(name = "Cart-Service")
public interface CartServiceClient {

    /**
     * 将商品添加到购物车
     *
     * @param map 地图
     * @return {@link CartResponse }<{@link String }>
     * @author 小粥
     * @since 2025/03/03
     */

    @PostMapping("/cart/add")
    CartResponse<String> addItemToCart(@RequestBody Map<String, Object> map);

    /**
     * 获取购物车内容
     *
     * @param map 地图
     * @return {@link CartResponse }<{@link Map }<{@link String }, {@link Object }>>
     * @author 小粥
     * @since 2025/03/03
     */

    @PostMapping("/cart/content")
    CartResponse<Map<String, Object>> getCartContent(@RequestBody Map<String, Object> map);

    /**
     * 更新物料数量
     *
     * @param map 地图
     * @return {@link CartResponse }<{@link String }>
     * @author 小粥
     * @since 2025/03/03
     */

    @PostMapping("/cart/update")
    CartResponse<String> updateItemQuantity(@RequestBody Map<String, Object> map);

    /**
     * 从购物车中删除商品
     *
     * @param map 地图
     * @return {@link CartResponse }<{@link String }>
     * @author 小粥
     * @since 2025/03/03
     */

    @PostMapping("/cart/delete")
    CartResponse<String> deleteItemFromCart(@RequestBody Map<String, Object> map);

    /**
     * 删除购物车中所有商品
     *
     * @param map 地图
     * @return {@link CartResponse }<{@link String }>
     * @author 小粥
     * @since 2025/03/03
     */

    @PostMapping("/cart/deleteAll")
    CartResponse<String> deleteAllItemsFromCart(@RequestBody Map<String, Object> map);
}